﻿יצירת אפליקצית Yii ראשונה
==============================

בכדי לקבל ניסיון התחלתי עם Yii, אנו מתארים בחלק זה כיצד ליצור את האפליקציה הראשונה שלנו ב Yii. אנו נשתמש בכלי `yiic` המאפשר יצירה אוטומטית של קוד בעבור משימות מסויימות. לנוחות, אנו מניחים ש `YiiRoot` הינה התיקיה בה Yii מותקן, ו `WebRoot` הינה התיקיה הראשית של שרת הווב שלנו.

יש להריץ את `yiic` בשורת הפקודות בצורה הבאה:

~~~
% YiiRoot/framework/yiic webapp WebRoot/testdrive
~~~

» Note|הערה: בעת הרצת `yiic` על גבי מחשבים Mac OS, Linux או Unix, יהיה צורך בשינוי הרשאות של קובץ ה `yiic` בכדי שיהיה ניתן להריץ אותו. לחלופין, ניתן להריץ את הכלי בצורה הבאה,
» ~~~
» % cd WebRoot/testdrive
» % php YiiRoot/framework/yiic.php webapp WebRoot/testdrive
» ~~~

זה יצור שלד לאפליקצית Yii תחת התיקיה `WebRoot/testdrive`. לאפליקציה יש מבנה של תקיות שנחוץ למרבית אפליקציות ה Yii.

ללא צורך בכתיבת שורת קוד אחת, אנו יכולים לנסות את האפליקציה שיצרנו כרגע על ידי כניסה לקישור הבא בדפדפן:

~~~
http://hostname/testdrive/index.php
~~~

כפי שניתן לראות, לאפליקציה יש ארבע עמודים: עמוד הבית, עמוד האודות, עמוד ההתחברות ועמוד היצירת קשר. עמוד יצירת הקשר מציג טופס יצירת קשר שמשתמש יכול להזין ולשלוח למנהל האתר, ועמוד ההתחברות מאפשר למשתמש לאמת את עצמו לפני שהוא ניגש לתוכן שהוא מוגבל לבעלי גישה בלבד.

![עמוד הבית](first-app1.png)

![עמוד יצירת הקשר](first-app2.png)

![עמוד יצירת קשר עם שגיאות](first-app3.png)

![עמוד יצירת קשר לאחר שליחת הטופס בהצלחה](first-app4.png)

![עמוד התחברות](first-app5.png)


הדיאגרמה הבאה מציגה את מבנה התיקיות של האפליקציה שלנו.
אנא קרא אודות [מוסכמות](/doc/guide/basics.convention#directory) בכדי לקבל הסבר מדוייק למבנה זה.

~~~
testdrive/
   index.php                 קובץ הכניסה הראשי של האפליקציה
   index-test.php            קובץ הכניסה הראשי למטרת בדיקות
   assets/                   מכיל קבצי נכסים הנגישים למשתמשים
   css/                      מכיל קבצי css
   images/                   מכיל תמונות
   themes/                   מכיל תבניות עיצוב לאפליקציה
   protected/                מכיל קבצים מוגנים של האפליקציה
      yiic                   קובץ פקודות עבור לינוקס ויוניקס
      yiic.bat               קובץ פקודות עבור וינדווס
      yiic.php               קובץ פקודות PHP
      commands/              מכיל פקודות 'yiic' מותאמים אישית
         shell/              מכיל פקודות 'yiic shell' מותאמים אישית
      components/            מכיל רכיבים אשר משתמשים בהם שוב ושוב
         Controller.php      מחלקת הבסיס לכל הקונטרולרים
         Identity.php        מחלקת הזיהוי של משתמשים
      config/                מכיל קבצי הגדרות
         console.php         קובץ הגדרות לאפליקציה דרך מסוף
         main.php            קובץ הגדרות לאפליקצית ווב
         test.php            קובץ הגדרות לבדיקות פונקצנליות
      controllers/           מכיל קבצי מחלקות קונטרולר
         SiteController.php  קונטרולר ברירת המחדל
      data/                  מכיל את מסדי הנתונים לדוגמא
         schema.mysql.sql    תרשים מסד הנתונים של MySQL
         schema.sqlite.sql   תרשים מסד נתונים של SQLite
         testdrive.db        קובץ מסד הנתונים לדוגמא של SQLite
      extensions/            מכיל הרחבות צד שלישי
      messages/              מכיל קבצי תרגום
      models/                מכיל קבצי מחלקות המודל
         LoginForm.php       מודל הטופס לפעולה של התחברות
         ContactForm.php     מודל הטופס לפעולה של יצירת קשר
      runtime/               מכיל קבצים זמניים
      tests/                 מכיל קבצי סקריפט לבדיקה
      views/                 מכיל קבצי תצוגה ותבניות של קונטרולרים
         layouts/            מכיל קבצי תבניות
            main.php         התבנית הראשית אשר מופיע בכל העמודים
            column1.php      תבנית לעמודים אשר משתמשים בעיצוב של עמודה אחת
            column2.php      תבנית לעמודים אשר משתמשים בעיצוב של שני עמודות
         site/               מכיל קבצי תצוגה לקונטרולר 'site'
             pages/           מכיל עמודים סטטיים
                about.php    קובץ התצוגה לעמוד אודות
            contact.php     קובץ תצוגה לעמוד יצירת קשר
            error.php        קובץ תצוגה להצגת שגיאות במידה ויש
            index.php        קובץ תצוגה לפעולה 'index'
            login.php        קובץ תצוגה לפעולה 'login'
~~~

התחברות למסד נתונים
----------------------

מרבית אפליקציות הווב מגובות בעזרת מסד נתונים. אפליקצית הניסיון שלנו היא אחת מהם. בכדי להשתמש במסד נתונים, אנו צריכים להגדיר לאפליקציה כיצד להתחבר אליה. זה נעשה בקובץ הגדרות האפליקציה אשר ממוקם `WebRoot/testdrive/protected/config/main.php`, המובלט בצורה הבאה,

~~~
[php]
return array(
    ......
    'components'=»array(
        ......
        'db'=»array(
            'connectionString'=»'sqlite:protected/data/testdrive.db',
        ),
    ),
    ......
);
~~~

הקוד למעלה מנחה את Yii  שהאפליקציה צריכה להתחבר למסד נתונים SQLite תחת `WebRoot/testdrive/protected/data/testdrive.db` בעת הצורך. מסד הנתונים SQLite כבר כלול בשלד האפליקציה שיצרנו זה עתה. מסד נתונים מכיל טבלה אחת בלבד בשם `tbl_user`:

~~~
[sql]
CREATE TABLE tbl_user (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    username VARCHAR(128) NOT NULL,
    password VARCHAR(128) NOT NULL,
    email VARCHAR(128) NOT NULL
);
~~~

במידה והינך רוצה לעבוד עם מסד נתונים מסוג MySQL במקום, תוכל להשתמש בקובץ התרשים של MySQL המצורף הנמצא ב `WebRoot/testdrive/protected/data/schema.mysql.sql` בכדי ליצור את מסד הנתונים.

» Note|הערה: בכדי להשתמש באפשריות מסדי הנתונים, אנו צריכים להתקין ולהפעיל את תוסף ה PHP בשם PDO ואת התוספים הספציפים לדרייברים בהם אנו נשתמש. בעבור אפליקצית הבדיקה הזו אנו צריכים להפעיל את התוספים `php_pdo` ו `php_pdo_sqlite`.

יישום פעולו CRUD
----------------------------

עכשיו זה החלק המהנה. אנו נרצה ליישם את פעולות ה-CRUD שזה קיצור של יצירה, קריאה, עדכון, מחיקה (Create, Read, Update, Delete) עבור הטבלה `User` שהרגע יצרנו. אפשרות זו הכרחית עבור אפליקציות אשר תלויות במשתמשים במערכת. במקום לבזבז את הזמן לכתיבת הקוד עצמו, אנו נשתמש ב-Gii -- מחולל קוד מבוסס אינטרנט (ווב).

» Info|מידע: Gii קיים החל מגרסא 1.1.2. עבור גרסאות ישנות יותר, אנו יכולים להשתמש בכלי `yiic` בכדי להשיג את אותה המטרה. למידע נוסף, אנא עיין במדריך ליצירת פעולות CRUD על ידי הכלי `yiic`. [יישום פעולות CRUD בעזרת yiic](/doc/guide/quickstart.first-app-yiic)

### הגדרת Gii

בכדי להשתמש ב Gii, אנו קודם צריכים לערוך את הקובץ `WebRoot/testdrive/protected/config/main.php`, הידוע בשמו כ-קובץ [הגדרות](/doc/guide/basics.application#application-configuration) האפליקציה.

~~~
[php]
return array(
    ......
    'import'=»array(
        'application.models.*',
        'application.components.*',
    ),

    'modules'=»array(
        'gii'=»array(
            'class'=»'system.gii.GiiModule',
            'password'=»'יש להזין סיסמא כאן',
        ),
    ),
);
~~~

לאחר מכן, יש לגשת לקישור `http://hostname/testdrive/index.php?r=gii`. אנו נראה מסך המבקש מאתנו להזין סיסמא, אותה סיסמא שציינו בשלב הקודם בקוד המוצג למעלה.

### יצירת מודל משתמשים

לאחר ההתחברות, יש ללחוץ על הקישור `Model Generator`. זה יביא אותנו לעמוד יצירת מודל הבא,

![יצירת מודל](gii-model.png)

בשדה של `Table Name` יש להזין `tbl_user`. בשדה של `Model Class`, יש להזין `User`. לאחר מכן יש ללחוץ על כפתור `Preview`. זה יציג לנו את הקוד שיווצר. כעת יש ללחוץ על כפתור `Generate`. קובץ חדש בשם `User.php` יווצר תחת התיקיה `protected/models`. כפי שאנו נסביר במהלך המדריך הזה, מחלקת המודל `User` שהרגע יצרנו מאפשרת לנו לתקשר עם הטבלה `tbl_user` אשר נמצאת תחת המחלקה באופן מונחה עצמים.

### יצירת קוד CRUD

לאחר יצירת קובץ מחלקת המודל, אנו ניצור את הקוד אשר מיישם את פעולות ה CRUD עבור המשתמש. אנו בוחרים `במחולל ה-CRUD` במערכת ה-Gii, כפי שמוצג בתמונה למטה,

![מחולל CRUD](gii-crud.png)

בשדה `Model Class`, יש להזין `User`. בשדה `Controller ID`, יש להזין `user` (באותיות קטנות בלבד). עכשיו יש ללחוץ על כפתור התצוגה מקדימה - `Preview` ולאחר מכן על כפתור היצירה - `Generate`. סיימנו עם יצירת הקוד עבור פעולות ה-CRUD.

### גישה לעמודים הנוצרו על ידי CRUD

הבא ונראה את התוצאה הסופית של העבודה שנעשתה:

~~~
http://hostname/testdrive/index.php?r=user
~~~

עמוד זה יציג רשימה של רשומות משתמשים מהטבלה `tbl_user`.

לחץ על כפתור ה `Create User` בעמוד. אנו נעבור לעמוד ההתחברות במידה ולא התחברנו עדיין. לאחר ההחברות, אנו נראה טופס שמאפשר לנו להוסיף משתמש חדש. מלא את הטופס ולחץ על כפתור `Create`.
במידה וישנם שגיאות כלשהם בטופס או בתוכן שהוזן, תוצג שגיאה שתמנע מאיתנו לשלוח את הטופס. בחזרה לעמוד רשימת המשתמשים, אנו אמורים לראות את המשתמשים החדשים אותם יצרנו ברשימה.

חזור על השלבים למעלה כדי להוסיף עוד משתמשים. שים לב שעמוד רשימת המשתמשים יציג עמודים אוטומטית אם ישנם יותר מדי משתמשים המוצגים בעמוד אחד.

אם נתחבר כמנהלים עם הפרטים `admin/admin`, אנו נוכל לצפות בעמוד ניהול המשתמשים בקישור הבא:

~~~
http://hostname/testdrive/index.php?r=user/admin
~~~

עמוד זה יציג את רשימת המשתמשים בפורמט טבלאי. אנו נוכל ללחוץ על כותרות העמודות בכדי למיין את הרשימה לפי אותה עמודה עליה לחצנו. נוכל ללחוץ על הכפתורים בכל רשומה בכדי לצפות, לערוך או למחוק את אותה רשומה.
אנו יכולים לצפות בעמודים שונים. כמו כן אנו יכולים לסנן ולחפש אחר מידע אותו אנו מחפשים.

כל האפשרויות הללו מגיעות ללא צורך בכתיבת שורת קוד אחת!

![עמוד ניהול משתמשים](first-app6.png)

![עמוד יצירת משתמש חדש](first-app7.png)



«div class="revision"»$Id: quickstart.first-app.txt 2125 2010-01-21 16:54:29Z qiang.xue $«/div»